package com.dysf.aspect;

import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

/**
 * @Description
 * @Author dysfzl
 * @Date 2022-01-08 16:11
 * @Copyright xx科技有限公司 Copyright (c)
 * @Version 1.0
 */

/**
 * @Aspect 声明为切面
 * @Component 将切面交给spring去管理
 */
@Aspect
@Component
public class LogUtil {

    /**
     @Before 通知类型，增强方法
     execution 切点表达式，通知和切点表达式相关联，切点表达式找到匹配的连接点（被代理的类及方法）
     execution(访问修饰符 返回值类型 方法全称)
     */
    // 前置通知
    @Before("execution(* com.dysf.service..*.*(..))")
    public static void before(){
        System.out.println("方法前");
    }

    // 后置通知
    @After("execution(* com.dysf.service..*.*(..))")
    public static void after(){
        System.out.println("方法后");
    }

    // 后置异常通知
    @AfterThrowing("execution(* com.dysf.service..*.*(..))")
    public static void afterException(){
        System.out.println("方法异常");
    }

    // 后置返回通知
    @AfterReturning("execution(* com.dysf.service..*.*(..))")
    public static void afterEnd(){
        System.out.println("方法返回");
    }
}
